(function(y, g) {
    Date.prototype.format = function(a) {
        var d = {
            "M+": this.getMonth() + 1,
            "d+": this.getDate(),
            "h+": this.getHours(),
            "m+": this.getMinutes(),
            "s+": this.getSeconds(),
            "q+": Math.floor((this.getMonth() + 3) / 3),
            S: this.getMilliseconds()
        };
        /(y+)/.test(a) && (a = a.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)));
        for (var c in d)
            (new RegExp("(" + c + ")")).test(a) && (a = a.replace(RegExp.$1, 1 == RegExp.$1.length ? d[c] : ("00" + d[c]).substr(("" + d[c]).length)));
        return a
    };
    g.GetRTime = function(a, d, c) {
        function w(a) {
            return -1 != a.indexOf("-") || -1 != a.indexOf("/") ? !0 : !1
        }
        function g(a) {
            return /^(20|21|22|23|[0-1]\d):[0-5]\d$/.test(y.trim(a)) ? !0 : !1
        }
        function r(a) {
            10 > a && c && (a = "0" + a);
            return a
        }
        function z() {
            if ("string" === typeof a || "number" === typeof a) {
                var b = (new Date).getTime(),
                    c;
                "string" === typeof a || 12 <= a.toString().length ? (a = "string" === typeof a && 1 == w(a) ? a.replace(/-/g, "/") : a, c = (new Date(a)).getTime(), b = c - b) : (c = a - A.count, b = 1E3 * c, A.count++);
                0 < b ? (h = Math.floor(b / 1E3 / 60 / 60 / 24), k = Math.floor(b / 1E3 / 60 / 60 % 24), l = Math.floor(b / 1E3 / 60 % 60), m =
                        Math.floor(b / 1E3 % 60), n = !0) : (window.clearInterval(e), m = l = k = h = 0, n = !1)
            } else
                "object" === typeof a && (b = (new Date).getTime() + (0 < t ? -1 * t : Math.abs(t)), c = 0, u < f ? (c = f, v = 1) : u >= f && u < p ? (c = p, v = 2) : u >= p && (v = 3), b = c - b, 0 < b ? (h = Math.floor(b / 1E3 / 60 / 60 / 24), k = Math.floor(b / 1E3 / 60 / 60 % 24), l = Math.floor(b / 1E3 / 60 % 60), m = Math.floor(b / 1E3 % 60), n = !0) : (window.clearInterval(e), m = l = k = h = 0, n = !1));
            b = {
                d: r(h),
                h: r(k),
                m: r(l),
                s: r(m)
            };
            b.status = n;
            b.step = v;
            if (d && "function" === typeof d)
                return d(b)
        }
        var e = this.timer;
        c || 0 == c || (c = !0);
        var A = {
                count: 0
            },
            h = 0,
            k = 0,
            l = 0,
            m = 0,
            v = 0,
            n = !1;
        if ("object" === typeof a) {
            a.init || 1 == a.init || (a.init = !1);
            var t = 0,
                x,
                q = 0;
            if (0 != a.setday || "0" != a.setday)
                q = 864E5 * parseInt(a.setday);
            a.nowdate && null != a.nowdate && void 0 != a.nowdate && "undefined" != a.nowdate ? (t = (new Date).getTime() - parseInt(a.nowdate), x = new Date(a.nowdate)) : (a.nowdate = (new Date).getTime(), x = new Date);
            var q = new Date(parseInt(a.nowdate) + q),
                f = 0,
                p = 0;
            0 == a.startdate || "0" == a.startdate || a.init || ("string" === typeof a.startdate ? w(a.startdate) ? f = (new Date(a.startdate.replace(/-/g, "/"))).getTime() :
                    g(a.startdate) && (f = (new Date(q.format("yyyy/MM/dd") + " " + a.startdate)).getTime()) : "number" === typeof a.startdate && (f = a.startdate));
            if (0 != a.enddate || "0" != a.enddate)
                "string" === typeof a.enddate ? w(a.enddate) ? p = (new Date(a.enddate.replace(/-/g, "/"))).getTime() : g(a.enddate) && (p = (new Date(q.format("yyyy/MM/dd") + " " + a.enddate)).getTime()) : "number" === typeof a.enddate && (f = a.enddate);
            var u = x.getTime()
        }
        z();
        e = setInterval(z, 1E3);
        if ("undefined" != e || null != e || void 0 != e)
            return e
    };
    y.extend(g)
})(jQuery || zepto, {});

